510. Тосты

 

Вы собираетесь поджарить несколько тостов для предстоящей вечеринки. У вас есть сковорода, на которой одновременно можно жарить не более k тостов. Поджаривание одной стороны тоста занимает 2 минуты.

Предположим, что размещение тоста на сковороде, его переворачивание и снятие происходят мгновенно.

Напишите программу, которая определяет минимальное количество минут, необходимое для поджаривания n тостов. Каждый тост должен быть поджарен с обеих сторон. Тосты нельзя снимать со сковороды раньше или позже 2 минут, нужных для прожарки одной стороны.

 

Вход. Два целых числа n и k (0 ≤ n ≤ 1000, 1 ≤ k ≤ 50) – количество тостов и вместимость сковороды (в тостах).

 

Выход. Выведите минимальное время в минутах, необходимое для поджаривания всех n тостов.

 

Пример входа

Пример выхода

3 2

6

 

 

РЕШЕНИЕ

элементарная задача

 

Анализ алгоритма

Если n  = 0, то ответ 0.

Если количество тостов n не превышает вместимость сковороды k (n ≤ k), то на поджаривание всех тостов с двух сторон потребуется 4 минуты.

Так как каждый тост нужно поджарить с обеих сторон, всего требуется  прожарок. Каждая прожарка (одновременное расположение на сковороде до k тостов) занимает 2 минуты.

Следовательно, если n > k, то минимальное время, необходимое для поджаривания всех тостов, равно 2 *  минут.

 

Пример

Пусть имеется n = 3 тоста, и сковорода вмещает одновременно k = 2 тоста. Обозначим стороны тостов как 1a, 1b, 2a, 2b, 3a, 3b.

Тогда все 6 сторон можно поджарить за 6 минут следующим образом:

·        Первая прожарка: 1a и 2a2 минуты;

·        Вторая прожарка: 1b и 3a2 минуты;

·        Третья прожарка: 2b и 3b2 минуты;

Итого: 3 прожарки по 2 минуты, то есть 6 минут.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d",&n,&k);

 

Если n  = 0, то ответ 0.

 

if (!n) res = 0; else

 

Если количество тостов не превышает вместимость сковороды, то на их поджаривание потребуется 4 минуты.

 

if (n <= k) res = 4; else

{

 

Каждый тост необходимо поджарить с двух сторон, то есть всего нужно прожарить  сторон. При этом одна прожарка (независимо от количества тостов на сковороде, не превышающего её вместимость) занимает 2 минуты.

 

  res = 2 * n / k;

  if (2 * n % k) res++;

  res *= 2;

}

 

Выводим ответ.

 

printf("%d\n",res);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String []args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int k = con.nextInt();

    int res;

 

    if (n == 0) res = 0; else   

    if (n <= k) res = 4; else

    {

      res = 2 * n / k;

      if (2 * n % k > 0) res++;

      res *= 2;

    }       

    System.out.println(res);

    con.close();

  }

}